//#include<iostream>
//using namespace std;
//
//int n, r, a[101]={0};
//bool vis[101]={false};
//
//void dfs(int x) {
//	if(x == r+1) {
//		for(int i=1; i<=r; i++)
//			cout << a[i] << " ";
//		cout << endl;
//		return;
//	}
//	for(int i=a[x-1]+1; i<=n; i++) {
//		if(!vis[i]){
//			vis[i] = true;
//			a[x] = i;
//			dfs(x+1);
//			a[x] = 0;
//			vis[i] = false;
//		}
//	}
//}
//
//int main() {
//	cin >> n >> r;
//	a[0]=0;
//	dfs(1);
//	return 0;
//}

#include<iostream>
using namespace std;

int n, r, a[101]={0};
bool vis[101]={false};

void dfs(int x) {
	if(x == r+1) {
		for(int i=0; i<r; i++)
			cout << a[i] << " ";
		cout << endl;
		return;
	}
	for(int i=a[x-1]; i<n; i++) {
		if(!vis[i]){
			vis[i] = true;
			a[x] = i+1;
			dfs(x+1);
			a[x] = 0;
			vis[i] = false;
		}
	}
}

int main() {
	cin >> n >> r;
	dfs(0);
	return 0;
}
